package desgin.pattern.construtor.builder;

/**
 * 
 * @Type Main
 * @Desc
 * 
 *       建造模式分成两个很重要的部分： 　　1.
 *       一个部分是Builder接口，这里是定义了如何构建各个部件，也就是知道每个部件功能如何实现，以及如何装配这些部件到产品中去； 　　2.
 *       另外一个部分是Director
 *       ，Director是知道如何组合来构建产品，也就是说Director负责整体的构建算法，而且通常是分步骤地来执行。
 *       　　不管如何变化，建造模式都存在这么两个部分，一个部分是部件构造和产品装配，另一个部分是整体构建的算法。认识这点是很重要的，
 *       因为在建造模式中，强调的是固定整体构建的算法，而灵活扩展和切换部件的具体构造和产品装配的方式。 　　
 *       再直白点说，建造模式的重心在于分离构建算法和具体的构造实现， 从而使得构建算法可以重用。具体的构造实现可以很方便地扩展和切换，
 *       从而可以灵活地组合来构造出不同的产品对象。
 * @author shuai.zuo
 * @date 2015年3月6日
 * @Version V1.0
 */
public class Main {
    public static void main(String[] args) {
        Builder builder = new ConcreteBuilder();
        Director d = new Director(builder);
        d.consult();// 构建
        Product p = builder.retriveResult();
        System.out.println(p.getPartA());
        System.out.println(p.getPartB());
    }
}
